Field of the Invention
The present invention relates to the field of functional and operational testing of a computer program and more particularly to incremental unit testing.
Description of the Related Art
Software functional testing relates to the functional testing of a graphical user interface (GUI) coupled to an underlying software application. Conventional functional testing tools allow the end user to create, modify and run functional, distributed functional, regression and smoke tests for applications built using any of a wide variety of integrated development environments. In this regard, the conventional functional testing tool can generate a test script for a GUI in which elements of the GUI can be exercised both sequentially and conditionally. Through a thorough testing of the GUI of an application, the functional testing tool can automatically identify defects early, often and repeatably.
Operational testing, in comparison to functional testing, refers to the exercise of the logical performance of an application under test. In operational testing, the invocation of an object can be used to compare an expected outcome with an actual outcome from the invocation. Both operational and functional testing can be automated through the use of testing scripts or tests. Tests can be produced manually and provided as input to a testing engine, or the tests can be generated in an automated fashion. In the latter instance, a conventional testing tool can monitor and record the interaction between end user and GUI during a recording phase of testing. During the recording phase, a test can be produced based upon the identity of GUI elements addressed by the end user, the corresponding logical operations invoked by the addressing of the GUI elements, the results of the invocation, and the sequence in which the GUI elements are addressed.
When testing a complex application of many different functional components disposed within different files, applying a full set of all tests related to the application can be a long, tedious, and resource-intensive process. Yet, during the development and maintenance process as part of the software lifecycle, applying a full set of tests is not necessary when only a small number of the files are affected by any particular change. Yet, knowing a priori the identity of the files impacted by a change to the application requires intimate knowledge and memory of the structure of the application and presupposes that even with the knowledge, one might be aware of all possible affects of a change. Of course, this is not usually the case. Accordingly, even in the face of a minor change to a single file supporting an application, the full compliment of tests for the application must be applied.